﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using QLTV.Public;
using QLTV.DAL;
using QLTV.BLL;


namespace QLTV.GUI.UserControl
{
    public partial class ucPhieuMuonSach : DevExpress.XtraEditors.XtraUserControl
    {
        DauSachDTO dsDTO;
        PhieuSachBLL psBLL = new PhieuSachBLL();
        PhieuSachDTO psDTO;
        CTPhieuBLL ctpBLL;
        CTPhieuDTO ctpDTO;
        DocGiaDTO dgDTO;
        SachDTO sDTO = new SachDTO();
        QuyDinhBLL qdBLL = new QuyDinhBLL();

        DataTable dtS = new DataTable();
        int i = 0;
        public ucPhieuMuonSach()
        {
            InitializeComponent();
        }


        private void gridView2_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
        {
            if (e.Column == colSTT_TimSach)
            {
                e.DisplayText = Convert.ToString(e.RowHandle + 1);
            }
            if (e.Column == colSTT)
            {
                e.DisplayText = Convert.ToString(e.RowHandle + 1);
            }
        }

        private void gridView2_Click(object sender, EventArgs e)
        {
            txtTimKiem.EditValue = grdTimSach.GetFocusedRowCellValue(colTenDS_TimSach);
        }
        //sự kiện click của nút tìm sách
        private void btnTimMaDS_Click(object sender, EventArgs e)
        {
            if (cbbCotTimKiem.Text == "Mã đầu sách")
            {
                if (txtTimKiem.Text == "")
                {
                    XtraMessageBox.Show("Bạn chưa nhập mã đầu sách");
                }
                else
                {
                    dsDTO = new DauSachDTO();
                    dsDTO.MaDS = ("" + txtTimKiem.Text.ToString().Trim() + "");
                    //tìm sách thông qua mã đầu sách
                    DataTable dtTable = psBLL.PhieuMuonSach_TimSach_MaDS(dsDTO);
                    if (dtTable.Rows.Count == 0)
                    {
                        XtraMessageBox.Show("Mã đầu sách không tồn tại hoặc hết sách để mượn!");
                    }
                    else
                    {
                        gridCTimSach.DataSource = dtTable;
                        if (grdTimSach.RowCount > 0)
                        {
                            btnDongY.Enabled = true;
                        }
                    }
                }
            }
            if (cbbCotTimKiem.Text == "Tên đầu sách")
            {

                if (txtTimKiem.Text == "")
                {
                    XtraMessageBox.Show("Bạn chưa nhập Tên đầu sách");
                }
                else
                {
                    dsDTO = new DauSachDTO();
                    dsDTO.TenDS = ("" + txtTimKiem.Text.ToString().Trim() + "");
                    //tìm sách thông qua tên đầu sách
                    DataTable dtTable = psBLL.PhieuMuonSach_TimSach_TenDS(dsDTO);
                    if (dtTable.Rows.Count == 0)
                    {
                        XtraMessageBox.Show("Tên đầu sách không tồn tại hoặc hết sách để mượn!");
                    }
                    else
                    {
                        gridCTimSach.DataSource = dtTable;
                        if (grdTimSach.RowCount > 0)
                        {
                            btnDongY.Enabled = true;
                        }
                    }
                }

            }

        }

        private void simpleButton3_Click(object sender, EventArgs e)
        {
            //groupControl3.Visible = true;
        }

        private void btnTimS_Click(object sender, EventArgs e)
        {
            panelControl2.Visible = true;
            btnDongSach.Enabled = true;
        }

        private void btnDongSach_Click(object sender, EventArgs e)
        {
            panelControl2.Visible = false;
        }
        //sự kiện click của nút đồng ý
        private void btnDongY_Click(object sender, EventArgs e)
        {

            if (grdTimSach.DataSource == null || grdTimSach.RowCount == 0)
            {
                XtraMessageBox.Show("Không có sách!");
            }
            else
            {
                var row = grdTimSach.FocusedRowHandle;
                sDTO.MaSach = grdTimSach.GetRowCellValue(row, "MaSach").ToString();
                for (int j = 0; j < grdThemSach.RowCount; j++)
                {
                    if (grdThemSach.GetRowCellValue(j, "MaSach").ToString() == sDTO.MaSach.ToString())
                    {
                        XtraMessageBox.Show("Mã sách này đã có trong mục mượn!");
                        return;
                    }
                }
                //lấy quy định từ bảng quy định
                DataTable dtQuyDinh = qdBLL.QuyDinh_LoadDuLieu();
                if (i < Convert.ToInt16(dtQuyDinh.Rows[4]["GiaTri"]))
                {

                    grdTimSach.DeleteRow(grdTimSach.FocusedRowHandle);
                    if (i == 0)
                    {
                        i = 1;
                        DataTable dt = psBLL.PhieuMuonSach_ThemSach_MaSach(sDTO);
                        dtS = dt.Copy();
                    }
                    else
                    {
                        i++;
                        DataTable dt = psBLL.PhieuMuonSach_ThemSach_MaSach(sDTO);
                        foreach (DataRow dr in dt.Rows)
                        {
                            dtS.Rows.Add(dr.ItemArray);
                        }
                    }
                    gridCThemSach.DataSource = dtS;

                }
                else XtraMessageBox.Show("Bạn chỉ có thể mượn được tối đa {0} quyển!", dtQuyDinh.Rows[4]["GiaTri"].ToString());
            }
            enableChoMuon();
        }

        private void ucPhieuMuonSach_Load(object sender, EventArgs e)
        {
            loadUC();

        }

        void loadUC()
        {
            gridCTimSach.DataSource = null;
            txtDiaChiDG.Text = "";
            txtEmailDG.Text = "";
            txtGioiTinhDG.Text = "";
            txtHoTenDG.Text = "";
            txtLoaiDG.Text = "";
            txtMaDG.Text = "";
            txtNgayHetHan.Text = "";
            txtNgayLapThe.Text = "";
            txtNgaySinh.Text = "";
            txtTimKiem.Text = "";
            //txtTimTacGia.Text = "";
            //txtTimTenDS.Text = "";
            btnMuon.Enabled = false;
            btnDongY.Enabled = false;
            btnBoQua.Enabled = false;
            btnDongSach.Enabled = false;
            btnXoa.Enabled = false;
            panelControl2.Visible = false;
        }
        private void btnMuon_Click(object sender, EventArgs e)
        {
            psDTO = new PhieuSachDTO();
            psDTO.MaDG = ("" + txtMaDG.Text.ToString().Trim() + "");
            psBLL.ChoMuonSach(psDTO);
            txtHoTenDG.Text = psDTO.MaPhieu;

            ctpBLL = new CTPhieuBLL();
            for (int j = 0; j < grdThemSach.RowCount; j++)
            {
                CTPhieuDTO t = new CTPhieuDTO();
                t.MaSach = grdThemSach.GetRowCellValue(j, "MaSach").ToString();
                ctpBLL.nhapCTP(psDTO, t);
            }
            dtS.Clear();
            loadUC();
            i = 0;
            XtraMessageBox.Show("Lập phiếu mượn thành công!");

        }
        void enableChoMuon()
        {
            if (grdThemSach.RowCount > 0)
            {
                btnXoa.Enabled = true;
            }
            else btnXoa.Enabled = false;
            if (grdThemSach.RowCount > 0 && txtMaDG.Text != "" && txtHoTenDG.Text != "")
            {
                btnMuon.Enabled = true;

            }
            else
            {
                btnMuon.Enabled = false;

            }
        }

        //sự kiện click của nút tìm
        private void btnTimDocGia_Click(object sender, EventArgs e)
        {
            PhieuSachDTO ps = new PhieuSachDTO();
            ps.MaDG = ("" + txtMaDG.Text.ToString().Trim() + "");
            //kiểm tra xem độc giả đã có mượn sách trước đó chưa, nếu có mà chưa trả thì không được mượn nữa
            DataTable data = psBLL.PhieuMuonSach_KiemTraDaTra_MaDG(ps);
            if (Convert.ToInt32(data.Rows[0][0]) == 0)
            {
                XtraMessageBox.Show("Bạn chưa trả sách trước đó nên không thể mượn được nữa!");
                return;
            }
            if (string.IsNullOrEmpty(txtMaDG.Text.ToString()))
            {
                XtraMessageBox.Show("Bạn chưa nhập mã độc giả!");
            }
            else
            {
                lammoiDocGia();
                dgDTO = new DocGiaDTO();
                dgDTO.MaDG = ("" + txtMaDG.Text.ToString().Trim() + "");
                //tìm độc giả thông qua mã độc giả
                DataTable dtTable = psBLL.PhieuTraSach_TimDocGia_MaDG(dgDTO);
                if (dtTable.Rows.Count == 0)
                {
                    XtraMessageBox.Show("Mã độc giả không tồn tại!");
                }
                else
                {

                    if (Convert.ToDateTime(dtTable.Rows[0]["NgayHetHan"]) < DateTime.Now)
                    {
                        XtraMessageBox.Show("Thời hạn thẻ của độc giả đã hết!");
                    }
                    else
                    {

                        txtHoTenDG.DataBindings.Add("Text", dtTable, "HoVaTen");
                        txtLoaiDG.DataBindings.Add("Text", dtTable, "TenLDG");
                        string t = dtTable.Rows[0]["GioiTinh"].ToString();
                        if (t == "True")
                        {
                            txtGioiTinhDG.Text = "Nữ";
                        }
                        else txtGioiTinhDG.Text = "Nam";
                        txtNgaySinh.DataBindings.Add("Text", dtTable, "NgaySinh");
                        txtDiaChiDG.DataBindings.Add("Text", dtTable, "DiaChi");
                        txtEmailDG.DataBindings.Add("Text", dtTable, "Email");
                        txtNgayLapThe.DataBindings.Add("Text", dtTable, "NgayLap");
                        txtNgayHetHan.DataBindings.Add("Text", dtTable, "NgayHetHan");
                    }
                }

            }
            enableChoMuon();
        }
        //làm mới usercontrol
        private void lammoiDocGia()
        {
            txtHoTenDG.DataBindings.Clear();
            txtLoaiDG.DataBindings.Clear();
            txtGioiTinhDG.DataBindings.Clear();
            txtNgaySinh.DataBindings.Clear();
            txtDiaChiDG.DataBindings.Clear();
            txtEmailDG.DataBindings.Clear();
            txtNgayLapThe.DataBindings.Clear();
            txtNgayHetHan.DataBindings.Clear();
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            grdThemSach.DeleteRow(grdThemSach.FocusedRowHandle);
            i--;
            enableChoMuon();
        }

        private void txtMaDG_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.KeyChar = Convert.ToChar(e.KeyChar.ToString().ToUpper());
        }

    }
}
